package py.progweb.sgc.manager.impl;

import javax.annotation.security.PermitAll;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;

import py.progweb.sgc.manager.ABMManagerLocal;
import py.progweb.sgc.manager.PagosFacadeLocal;
import py.progweb.sgc.manager.exceptions.ServiceException;
import py.progweb.sgc.model.Pago;

@Stateless(name = "PagosFacade")
@TransactionManagement(TransactionManagementType.CONTAINER)
public class PagosFacadeImpl implements PagosFacadeLocal {
	@EJB
	private ABMManagerLocal pagosEAO;

	@PermitAll
	@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
	public void guardarPago(Pago pago) throws ServiceException {
		try {
			if (pago.getMonto() < 0) {
				throw new ServiceException(
						"\nEl monto del pago no puede ser negativo");
			}
			if (pago.getFactura().getSaldo() < pago.getMonto()) {
				throw new ServiceException(
						"\nEl monto del pago excede el saldo de la factura");
			}
			pagosEAO.guardar(pago);

		
			pago.getFactura().setSaldo(
					pago.getFactura().getSaldo() - pago.getMonto());
		

			if (pago.getFactura().getSaldo().equals(0)) {
				pago.getFactura().setEstado("pagada");
			}
			pagosEAO.guardar(pago.getFactura());

		} catch (Exception e) {
			throw new ServiceException(e);
		}

	}
}
